// 模块
import router from './router'
import store from './store' // vuex里面公共数据

// API
import { getInfo, getDetail } from '@/api/user'

// 进度条
import NProgress from 'nprogress' // 进度条
import 'nprogress/nprogress.css' // 顶部进度条：蓝色
NProgress.configure({ showSpinner: false }) // 进度条配置：

const whiteList = ['/login'] // white白 List名单：白名单！允许没有token用户你能去到地儿

router.beforeEach(async(to, from, next) => {
  NProgress.start() // 进度条开始

  // 1、那token
  const token = store.state.user.token

  // 2、判断
  if (token) { // 有会员卡
    if (to.path === '/login') { // 去登录？
      next('/') // 没必要，直接去主页
    } else { //  去除了login以外这些其他页    /dashboard   /form/index
      // x里面没有用户信息
      // store.state.user.userObj.userId === undefined
      if (!store.state.user.userObj.userId) { // 无值
        // 1、获取用户 基本数据
        const { data } = await getInfo()

        // 2、获取用户带头像的 详细数据
        const res = await getDetail(data.userId)

        // 3、组合为整体对象
        const one = {
          ...data,
          ...res.data
        }

        // 4、存
        store.commit('user/setUser', one)
      }

      next() // 放行
    }
  } else { // 无会员卡
    if (whiteList.includes(to.path)) { // 去白名单地儿
      next()
    } else { // 去其他地儿
      next('/login')
    }
  }

  // 进度条：关也可以在这写！
})

// afterEach：后置路由，没有参数！用于配置进度条，加载中~~
router.afterEach(() => {
  NProgress.done()
})
